package ywpt.service.client;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import ywpt.model.ClientInfo;
import ywpt.model.ClientType;
import ywpt.model.Department;

public interface  ClientService {

	public abstract List<ClientInfo> getClientsByClientName(String clientName,Long departId, int start, int size);
	
	public abstract int getClientsCountByName(String name,Long departId);
	
	public abstract ClientInfo getClientInfoById(Long id);

	public int getClientInfoCountByCriteria(DetachedCriteria query);

	public abstract List<ClientInfo> getClientInfos(DetachedCriteria query, int pageSize, int startIndex);

	public abstract List<ClientInfo> getClientInfos(DetachedCriteria query);
	
	public abstract List<ClientInfo> getClientInfos();
	
	public abstract String createClientCode();

	public abstract void saveClientInfo(ClientInfo clientInfo,Long typeId);

	public abstract void updateClientInfo(ClientInfo clientInfo,Long typeId);

	public abstract void removeClientInfo(Long id);

	public abstract List<Department> getDepartments();

	public abstract List<ClientType> getClientTypes();
		
}
